package com.md.response;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.md.value.AppTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.Data;

import java.util.Map;
import java.util.Optional;

/**
 * @author 刘骄阳
 * 2024-07-14 22:13
 */
@Data
@ApiOperation("应用响应实体")
public class AppInfoResponse {
  /**
   * 唯一标识id
   */
  @JsonFormat(shape = JsonFormat.Shape.STRING)
  @ApiModelProperty("主键id")
  private Long id;
  /**
   * 应用code
   */
  @ApiModelProperty("应用code")
  private String appCode;

  /**
   * 应用名
   */
  @ApiModelProperty("应用名")
  private String appName;
  /**
   * 应用英文名
   */
  @ApiModelProperty("应用英文名")
  private String appEnName;

  /**
   * 额外参数
   */
  @ApiModelProperty("额外参数")
  private Map<String, Object> appExtra;
  /**
   * 应用logo
   */
  @ApiModelProperty("应用logo")
  private String appLogo;

  @ApiModelProperty("应用类型(PUBLIC;PRIVATE)")
  private AppTypeEnum appType;
  /**
   * 租户id
   */
  @ApiModelProperty("租户id")
  private Long tenantId;
  /**
   * 应用id
   */
  @ApiModelProperty("应用id")
  private Long brandId;

  public <T> T getExtraValue(final String key) {
    return Optional.ofNullable(appExtra).map(map -> (T) map.get(key)).orElse(null);
  }
}
